package com.jy.oms.framework.asyn.task.constants;

import java.util.concurrent.TimeUnit;

public interface TaskConstants {
    //队列初始化线程数
    Integer DEFAULT_CORE_POOL_SIZE = Runtime.getRuntime().availableProcessors();
    //默认每个任务队列最大线程数
    Integer DEFAULT_MAX_QUEUE_THREAD = DEFAULT_CORE_POOL_SIZE * 2;
    //队列任务线程池空闲最大时间
    Long DEFAULT_KEEP_ALIVE_TIME = 30L;//分钟
    //队列任务线程池空闲最大时间单位
    TimeUnit DEFAULT_KEEP_ALIVE_TIME_UNIT = TimeUnit.MINUTES;
    //队列任务线程池等待队列最大长度
    Integer DEFAULT_BLOCKING_QUEUE_SIZE = 200;
    //队列任务线程池线程最大阀值
    Integer DEFAULT_TOTAL_THREAD = 200;
    //线程最大重试次数
    int DEFAULT_TASK_RETRY_NUM = 5;
    //任务超时时间
    int DEFAULT_TASK_EXECUTE_TIMEOUT_SECONDS = 120;
    //任务超时累计次数阈值
    int DEFAULT_TASK_EXECUTE_TIMEOUT_THRESHOLD = 3;
    //线程池超时任务堵塞时间
    int DEFAULT_THREADPOOL_TASK_TIMEOUT_MIllS = 600 * 1000;

    //db每次查询数据量
    int DB_QUEUE_TASK_SIZE_PER_QUERY = DEFAULT_BLOCKING_QUEUE_SIZE;
    //redis/mem每次查询数据量
    int REDIS_QUEUE_TASK_SIZE_PER_QUERY = 10;

    //默认分组任务编码
    String DEFAULT_GROUP_CODE = "default_group";
    //限速执行分组编码
    String LIMITER_GROUP_CODE = "limiter_group";
    //默认分组任务执行间隔周期等待时间（秒）
    int DEFAULT_GROUP_INTERVAL_WAIT_TIME = 1;
    //跳过的任务执行间隔周期等待时间（秒）
    int SKIP_GROUP_INTERVAL_WAIT_TIME = 10;

    //任务执行失败时错误信息长度
    //因历史原因sys_task_log response字段设计为varchar, 为避免内容大报错，因此需截断
    int TASK_FAIL_RES_MESSAGE_LIMIT = 2000;
}
